﻿using System;

namespace Teigha.Core
{
	public class OdGsCullingVolume_Internal : OdGsCullingVolume
	{
		public OdGsCullingVolume_Internal(IntPtr cPtr, bool cMemoryOwn) : base(cPtr, cMemoryOwn)
		{
		}

		public override OdGsCullingVolume.ProjectionType projectionType()
		{
			int result = GlobalsPINVOKE.OdGsCullingVolume_projectionType(OdGsCullingVolume.getCPtr(this));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return (OdGsCullingVolume.ProjectionType)result;
		}

		public override bool intersectWithOpt(OdGsCullingPrimitive prim)
		{
			bool result = GlobalsPINVOKE.OdGsCullingVolume_intersectWithOpt(OdGsCullingVolume.getCPtr(this), prim.GetCPtr());
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public override OdGsCullingVolume.IntersectionStatus intersectWith(OdGsCullingPrimitive prim)
		{
			int result = GlobalsPINVOKE.OdGsCullingVolume_intersectWith(OdGsCullingVolume.getCPtr(this), prim.GetCPtr());
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return (OdGsCullingVolume.IntersectionStatus)result;
		}

		public override void transformBy(OdGeMatrix3d xfm)
		{
			GlobalsPINVOKE.OdGsCullingVolume_transformBy(OdGsCullingVolume.getCPtr(this), OdGeMatrix3d.getCPtr(xfm));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}
	}
}
